#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int n;
int dp[100005][12];
int main(void){
    //freopen("data.txt","r",stdin);
    while(~scanf("%d",&n) && n){
        int x,t;
        int t_max=0;
        memset(dp,0,sizeof(dp));
        while(n--){
            scanf("%d%d",&x,&t);
            dp[t][x]++;
            t_max=max(t_max,t);
        }
        int ans=0;
        //正向dp的话初始位置是5 不知道处理
        // for(int t=1;t<=t_max;t++){
        //     for(int i=0;i<=10;i++){
        //         dp[t][i]+=max(dp[t-1][i-1],max(dp[t-1][i],dp[t-1][i+1]));
        //         printf("%d %d %d\n",t,i,dp[t][i]);
        //     }
        // }
        // printf("%d\n",dp[t_max][5]);
        //不如反过来，dp[t][i]同样记为开始多少秒后，从该位置（开始）！！！能接到的馅饼数
        //比如第0秒5位置能接到的馅饼，就等于0秒时5位置本身的馅饼，加上1秒时5 6 7位置能接到的馅饼
        for(int t=t_max;t>=0;t--){
            for(int i=0;i<=10;i++){
                //t要+1表示这一秒开始的要加上下一秒的情况
                dp[t][i]+=max(dp[t+1][i-1],max(dp[t+1][i],dp[t+1][i+1]));
                //printf("%d %d %d\n",t,i,dp[t][i]);
            }
        }
        printf("%d\n",dp[0][5]);
    }
    return 0;
}